﻿using System;
using System.Collections.Generic;
using NHibernate.Criterion;
using EntitiesAndMappings.Entities;
using NHibernate.SqlCommand;
using NHibernate;
using ProyectoActivos.Const;


namespace ProyectoActivos.Daos
{
    public class TipoMovimientoDAO : BaseDAO<TipoMovimiento>
    {

        public IList<TipoMovimiento> Buscar(TipoMovimiento tipoMovimiento)
        {
            IList<TipoMovimiento> lista;
            using (var session = CreateSessionFactory().OpenSession())
            {
                using (var transaction = session.BeginTransaction())
                {
                    var criteria = session.CreateCriteria<TipoMovimiento>();



                    if (tipoMovimiento.TipoEntradaOSalida!= 0)
                    {
                        criteria.Add(Restrictions.Eq("TipoEntradaOSalida", tipoMovimiento.TipoEntradaOSalida));
                    }


                    lista = criteria.List<TipoMovimiento>();
                    transaction.Commit();
                }

            }
            return lista;
        }

        public IList<TipoMovimiento> ListarTipoMovimientoSalidaActivos()
        {
            IList<TipoMovimiento> lista;
            using (var session = CreateSessionFactory().OpenSession())
            {
                using (var transaction = session.BeginTransaction())
                {
                    var criteria = session.CreateCriteria<TipoMovimiento>();

                    criteria.Add(Restrictions.Eq("TipoEntradaOSalida", TipoMovimiento.TIPO_MOVIMIENTO_SALIDA));
                    criteria.Add(Restrictions.Eq("Estado", Estado.Activo));
                    lista = criteria.List<TipoMovimiento>();
                    transaction.Commit();
                }

            }
            return lista;
        }

        public IList<TipoMovimiento> ListarTipoMovimientoEntradaActivos()
        {
            IList<TipoMovimiento> lista;
            using (var session = CreateSessionFactory().OpenSession())
            {
                using (var transaction = session.BeginTransaction())
                {
                    var criteria = session.CreateCriteria<TipoMovimiento>();

                    criteria.Add(Restrictions.Eq("TipoEntradaOSalida", TipoMovimiento.TIPO_MOVIMIENTO_ENTRADA));
                    criteria.Add(Restrictions.Eq("Estado", Estado.Activo));
                    lista = criteria.List<TipoMovimiento>();
                    transaction.Commit();
                }

            }
            return lista;
        }


    }
}
